package com.kn.order.untils;

import com.kn.order.dto.ContractDto;
import org.apache.poi.hssf.usermodel.*;

import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

public class PoiExcelUtils {
    public static List<ContractDto> getMeetEnrollList(List list) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return list;
    }


    public static String exportExcel(String fileName,String[] titles,List<Map<String,Object>> result){
        HSSFWorkbook wb;
        FileOutputStream fos;
        String tempName = fileName;
        try {
            Date date = new Date();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            fileName +="_"+df.format(date)+".xls";

            //获取桌面路径-加上直接下载到桌面--不加直接下载到服务器文件处
            FileSystemView fsv = FileSystemView.getFileSystemView();
            File com=fsv.getHomeDirectory();//读取桌面路径

            fos = new FileOutputStream(com.getPath()+"\\"+fileName);
            wb= new HSSFWorkbook();
            HSSFSheet sh = wb.createSheet(); //sheet文件

            // 设置列宽
            for(int i = 0; i < titles.length-1; i++){
                sh.setColumnWidth( i, 200*15+184);
            }

            // 第一行表头标题，CellRangeAddress 参数：行 ,行, 列,列
            HSSFRow row = sh.createRow(0);
            HSSFCell cell = row.createCell(0);
            cell.setCellValue(new HSSFRichTextString(tempName));

            // 第二行
            HSSFRow row3 = sh.createRow(1);

            // 第二行的列
            for(int i=0; i < titles.length; i++){
                cell = row3.createCell(i);
                cell.setCellValue(new HSSFRichTextString(titles[i]));
            }

            //填充数据的内容  i表示行，z表示数据库某表的数据大小，这里使用它作为遍历条件
            int i = 2, z = 0;
            while (z < result.size()) {
                row = sh.createRow(i);
                Map<String,Object> map = result.get(z);
                for(int j=0;j < titles.length;j++) {
                    cell = row.createCell(j);
                    if(map.get(titles[j]) !=null) {

                        cell.setCellValue(map.get(titles[j]).toString());
                    }else {
                        cell.setCellValue(""); System.out.println(11);
                    }
                }
                i++;
                z++;
            }
            wb.write(fos);
            fos.flush();
            fos.close();
            return fileName;
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}


